home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MATH / MATH1 / SORT-S.LIB < prev    next >
Text File  |  1985-04-03  |  640b  |  43 lines

  1.  
  2.  
  3. { --> 178}
  4.  
  5. procedure {shell} sort(var a: ary; n: integer);
  6. { Shell-Metzner sort }
  7. { Adapted from 'Programming in pascal',
  8.     P. Grogono, Addison-Wesley, 1980 }
  9.  
  10. var    done    : boolean;
  11.     jump,i,j: integer;
  12.  
  13. procedure swap(var p,q: real);
  14. var    hold    : real;
  15.  
  16. begin
  17.   hold:=p;
  18.   p:=q;
  19.   q:=hold
  20. end;        { swap }
  21.  
  22. begin
  23.   jump:=n;
  24.   while jump>1 do
  25.     begin
  26.       jump:=jump div 2;
  27.       repeat
  28.     done:=true;
  29.     for j:=1 to n do
  30.       begin
  31.         i:=j+jump;
  32.         if a[j]>a[i] then
  33.           begin
  34.         swap(a[j],a[i]);
  35.         done:=false
  36.         end        { if }
  37.     end        { for }
  38.       until done
  39.   end            { while }
  40. end;        { SORT }
  41.  
  42.  
  43.